package NO2_String;

import java.util.HashMap;
import java.util.Map;

/**
 * 2025-08-12
 * 力扣 - 290. 单词规律
 * <p>
 * 给定一种规律 pattern 和一个字符串 s ，判断 s 是否遵循相同的规律。
 * 这里的 遵循 指完全匹配，例如， pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。
 */
public class WordPatternMain {
    public static void main(String[] args) {
        System.out.println(wordPattern("abba", "dog cat cat dog"));
    }
    public static boolean wordPattern(String pattern, String s) {
        String[] sArray = s.split(" ");
        if (pattern.length() != sArray.length) {
            return false;
        }

        char[] patternCharArray = pattern.toCharArray();
        Map<Character, String> map = new HashMap<>();
        for (int i = 0; i < pattern.length(); i++){
            if (map.containsKey(patternCharArray[i])){
                if (!map.get(patternCharArray[i]).equals(sArray[i])){
                    return false;
                }
            }
            map.put(patternCharArray[i], sArray[i]);
        }

        Map<String, Character> map1 = new HashMap<>();
        for (int i = 0; i < pattern.length(); i++){
            if (map1.containsKey(sArray[i])){
                if (!map1.get(sArray[i]).equals(patternCharArray[i])){
                    return false;
                }
            }
            map1.put(sArray[i], patternCharArray[i]);
        }

        return true;
    }
}
